#include <stdio.h>
#include <time.h>
#include <stdlib.h>

#define MaxSize 50
typedef int ElemType;
typedef struct SeqList{
    ElemType data[MaxSize];
    int length;
}SeqList;

// 初始化数组：给数组中填充元素
void initList(SeqList &S,int length){
    S.length = length;
    srand(time(NULL));// 生成随机数
    for(int i=0;i<S.length;i++){
        S.data[i] = rand()%100;
    }
}
// 遍历数组中的数据
void printList(SeqList S){
    for (int i = 0; i < S.length; ++i) {
        printf("%d ",S.data[i]);
    }
    printf("\n");
}

// 冒泡排序：从小到大
void BubbleSort(ElemType data[],int length){

    for(int i = 0;i<length-1;i++){ // 冒泡排序要排n-1次
        bool flag = false; // 元素是否发生交换的标志

        for(int j=length-1;j>i;j--){// 遍历每一趟，两两比较数据
            if(data[j] < data[j-1]){
                // 交换数据
                ElemType tmp = data[j];
                data[j] = data[j-1];
                data[j-1] = tmp;
                flag = true; // 数据发生了交换
            }
        }
        if(!flag){
            // 一趟比较后，没有发生数据交换，则说明有序，提前结束排序
            return;
        }
    }
}
int main() {
    SeqList S;
    initList(S,10);
    printList(S);
    BubbleSort(S.data,10);
    printList(S);
    return 0;
}
